package com.tonann.app.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.tonann.common.annotation.Excel;
import com.tonann.common.core.domain.BaseEntity;
import com.tonann.common.core.domain.entity.SysUser;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * 运行设备对象 app_device
 *
 * @author tonann
 * @date 2022-10-12
 */
@Data
public class AppDevice extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** ID */
    private Long deviceId;

    /** 上级设备ID */
    @Excel(name = "上级设备ID")
    private Long parentId;

    /** 项目ID */
    @Excel(name = "项目ID")
    private Long projectId;

    /** 连接的网关 */
    @Excel(name = "连接的网关")
    private Long gatewayId;

    /** 设备编号 */
    @Excel(name = "设备编号")
    private String deviceCode;

    /** 设备名字 */
    @Excel(name = "设备名字")
    private String deviceName;

    /** 子部设备数目 */
    @Excel(name = "子部设备数目")
    private Long subCount;

    /**
     * 额定功率
     */
    @Excel(name = "额定功率")
    private Long ratedPower;

    /**
     * 状态
     */
    @Excel(name = "状态")
    private String status;

    /**
     * 生产厂商
     */
    @Excel(name = "生产厂商")
    private String manufactor;

    /**
     * 品牌
     */
    @Excel(name = "品牌")
    private String brand;

    /**
     * 型号
     */
    @Excel(name = "型号")
    private String model;

    /**
     * 购置日期
     */
    @Excel(name = "购置日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date acquisitionDate;

    /**
     * 维保单位
     */
    @Excel(name = "维保单位")
    private String maintenanceUnit;

    /**
     * 上次维保日期
     */
    @Excel(name = "上次维保日期")
    @JsonFormat(pattern = "yyyy-MM-dd")
    private Date maintenanceDate;



    /**
     * 是否在线
     */
    @Excel(name = "是否在线")
    private String isOnline;

    /**
     * 是否运行
     */
    @Excel(name = "是否运行")
    private String isRunning;

    /**
     * 是否异常
     */
    @Excel(name = "是否异常")
    private String isException;

    /**
     * 是否演示设备
     */
    @Excel(name = "是否演示设备")
    private String isShow;

    /**
     * 设备类型 1照明系统  2 控制器系统  3排风系统 4新风系统  5空调系统 6纯水系统 7可燃气体 8 气路系统 9房间环境
     */
    @Excel(name = "设备类型 1照明系统  2 控制器系统  3排风系统 4新风系统  5空调系统 6纯水系统 7可燃气体 8 气路系统 9房间环境")
    private String type;

    /**
     * 删除（0-正常 2-删除)
     */
    private String delFlag;
    /**
     * 祖级列表
     */
    private String ancestors;

    /** 部门树选择项是否关联显示（0：父子不互相关联显示 1：父子互相关联显示 ） */
    private boolean deptCheckStrictly;

    /** 空间位置树选择项是否关联显示（0：父子不互相关联显示 1：父子互相关联显示 ） */
    private boolean placeCheckStrictly;

    /**
     * 父设备名称
     */
    private String parentName;

    private Long[] deptIds;

    private Long[] placeIds;

    private AppGateway appGateway;

    private AppProject appProject;

    private Long[] adminIds;

    private Long[] operatorIds;

    private List<SysUser> admin;

    private List<SysUser> operator;

    /**
     * 子设备
     */
    private List<AppDevice> children = new ArrayList<AppDevice>();

    private List<AppSensor> sensorList = new ArrayList<>();

//    public void setDeviceId(Long deviceId)
//    {
//        this.deviceId = deviceId;
//    }
//
//    public Long getDeviceId()
//    {
//        return deviceId;
//    }
//    public void setParentId(Long parentId)
//    {
//        this.parentId = parentId;
//    }
//
//    public Long getParentId()
//    {
//        return parentId;
//    }
//    public void setGatewayId(Long gatewayId)
//    {
//        this.gatewayId = gatewayId;
//    }
//
//    public Long getGatewayId()
//    {
//        return gatewayId;
//    }
//
//    public Long getProjectId()
//    {
//        return projectId;
//    }
//    public void setProjectId(Long projectId)
//    {
//        this.projectId = projectId;
//    }
//    public void setDeviceCode(String deviceCode)
//    {
//        this.deviceCode = deviceCode;
//    }
//
//    public String getDeviceCode()
//    {
//        return deviceCode;
//    }
//    public void setDeviceName(String deviceName)
//    {
//        this.deviceName = deviceName;
//    }
//
//    public String getDeviceName()
//    {
//        return deviceName;
//    }
//    public void setSubCount(Long subCount)
//    {
//        this.subCount = subCount;
//    }
//
//    public Long getSubCount()
//    {
//        return subCount;
//    }
//    public void setRatedPower(Long ratedPower)
//    {
//        this.ratedPower = ratedPower;
//    }
//
//    public Long getRatedPower()
//    {
//        return ratedPower;
//    }
//    public void setStatus(String status)
//    {
//        this.status = status;
//    }
//
//    public String getStatus()
//    {
//        return status;
//    }
//    public void setType(String type)
//    {
//        this.type = type;
//    }
//
//    public String getType()
//    {
//        return type;
//    }
//    public void setDelFlag(String delFlag)
//    {
//        this.delFlag = delFlag;
//    }
//
//    public String getDelFlag()
//    {
//        return delFlag;
//    }
//
//    public String getAncestors()
//    {
//        return ancestors;
//    }
//
//    public void setAncestors(String ancestors)
//    {
//        this.ancestors = ancestors;
//    }
//
//    public boolean isDeptCheckStrictly()
//    {
//        return deptCheckStrictly;
//    }
//
//    public void setDeptCheckStrictly(boolean deptCheckStrictly)
//    {
//        this.deptCheckStrictly = deptCheckStrictly;
//    }
//
//    public boolean isPlaceCheckStrictly()
//    {
//        return placeCheckStrictly;
//    }
//
//    public void setPlaceCheckStrictly(boolean placeCheckStrictly)
//    {
//        this.placeCheckStrictly = placeCheckStrictly;
//    }
//
//    public String getParentName()
//    {
//        return parentName;
//    }
//
//    public void setParentName(String parentName)
//    {
//        this.parentName = parentName;
//    }
//
//    public Long[ ] getDeptIds() {
//        return deptIds;
//    }
//
//    public void setDeptIds(Long[ ] deptIds) {
//        this.deptIds = deptIds;
//    }
//
//    public Long[ ] getPlaceIds() {
//        return placeIds;
//    }
//
//    public void setPlaceIds(Long[ ] placeIds) {
//        this.placeIds = placeIds;
//    }
//
//    public AppGateway getAppGateway() {
//        return appGateway;
//    }
//
//    public void setAppGateway(AppGateway appGateway) {
//        this.appGateway = appGateway;
//    }
//
//    public AppProject getAppProject() {
//        return appProject;
//    }
//
//    public void setAppProject(AppProject appProject) {
//        this.appProject = appProject;
//    }
//
//    public List<AppDevice> getChildren()
//    {
//        return children;
//    }
//
//    public void setChildren(List<AppDevice> children)
//    {
//        this.children = children;
//    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("deviceId", getDeviceId())
                .append("parentId", getParentId())
                .append("gatewayId", getGatewayId())
                .append("deviceCode", getDeviceCode())
                .append("deviceName", getDeviceName())
                .append("subCount", getSubCount())
                .append("ratedPower", getRatedPower())
                .append("status", getStatus())
                .append("type", getType())
                .append("delFlag", getDelFlag())
                .append("createBy", getCreateBy())
                .append("updateBy", getUpdateBy())
                .append("createTime", getCreateTime())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
